
import axios from 'axios'




// axios 配置代码 
import { message } from 'antd';

const key = 'updatable';
// 封装代码 get post delete patch 
// 反向代理不能使用基路径 

const AUTH_TOKEN = ''
axios.defaults.baseURL = "http://localhost:4000/"     // 基路径   反向代理是不能使用基路径 
// axios.defaults.headers.common['Authorization'] = AUTH_TOKEN;  // 请求头 设置token 
// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';   // 设置POST请求数据提交方式




export function showLoading(msg='加载中...'){
    message.loading({ content: msg, key });
 
}

export function showSuccess(msg='成功'){
  
    message.success({ content: msg, key, duration: 2 });
}

export function showFail(msg='失败'){
    message.error({ content: msg, key, duration: 2 });
}


// Interceptors 拦截器   request req 
// 添加一个请求发送之前的拦截器
axios.interceptors.request.use(function (config) {
    // 请求发送之前做点事情 
    // 请求动画 Loading 
    showLoading()
    return config;
}, function (error) {

    // 请求发送失败 
    console.log(error)
    showFail('请求失败')
    return Promise.reject(error);
});


// 添加一个响应完成之前的拦截器   response res 
axios.interceptors.response.use(function (response) {
    console.log(response.data)
    // 根据状态 code 实现对应的业务逻辑 
    // 成功 code 200 
    // 失败 code !=200
    if(response.data.code==200){
        showSuccess(response.data.msg)
    }else{
        showFail(response.data.msg)
    }
    // showSuccess() 手机端不会出现成功提示 
    return response;
  }, function (error) {
    // 响应失败 
    // 404 503 
    console.log(error)
    showFail('服务器异常')
    return Promise.reject(error);
});


// 增删改查  Promise 
// get
export function get(url,params,headers){
    return new Promise(function(resolve,reject){
        axios({
            url,
            method:"GET",
            params:params,  
            headers,
        })
        .then(result=>{
            resolve(result.data)   // axios 里面的 data 数据解析 
        })
        .catch(err=>{
            reject(err)
        })
    })
}
// post
export function post(url,data,params,headers){
    return new Promise(function(resolve,reject){
        axios({
            url,
            method:"post",
            params:params,    // POST 也可以拼接 url?id=1
            headers:headers,
            data,   // POST 请求提交的数据 
        })
        .then(result=>{
            resolve(result.data)   // axios 里面的 data 数据解析 
        })
        .catch(err=>{
            reject(err)
        })
    })
}
// delete
export function Delete(url,params){
    return new Promise(function(resolve,reject){
        axios({
            url,
            method:"delete",
            params:params,    
        })
        .then(result=>{
            resolve(result.data)   // axios 里面的 data 数据解析 
        })
        .catch(err=>{
            reject(err)
        })
    })
}
// patch
export function Patch(url,data){
    return new Promise(function(resolve,reject){
        axios({
            url,
            method:"patch",
            data
        })
        .then(result=>{
            resolve(result.data)   // axios 里面的 data 数据解析 
        })
        .catch(err=>{
            reject(err)
        })
    })
}



export {
    axios
}
